/**
 * 
 */
package fr.gfi.agraf.persistence.dao.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.NoResultException;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;

import fr.gfi.agraf.persistence.dao.IComposantDAO;
import fr.gfi.agraf.persistence.entity.Composant;
import fr.gfi.agraf.utils.PropertiesUtils;

/**
 * @author Zakaria
 * 
 */
@Repository
public class ComposantDAO extends AbstractGenericDAO<Composant> implements IComposantDAO {

	private static final String HQL_COMPOSANT_SELECT_BY_PROFIL = "hql.composant.selectByProfil";
	private static final String ERREUR_AUCUN_COMPOSANTS_TROUVES = "erreur.no.composant.trouve";

	/**
	 * Logger
	 */
	private final static Logger LOGGER = Logger.getLogger(ComposantDAO.class);

	public List<Composant> getComposantsParProfil(final Long idProfil) {
		List<Composant> output = null;
		final String query = PropertiesUtils.getProperty(HQL_COMPOSANT_SELECT_BY_PROFIL);
		try {
			output = em.createQuery(query, Composant.class).setParameter("idProfil", idProfil)
					.getResultList();
		} catch (final NoResultException e) {
			LOGGER.error(ERREUR_AUCUN_COMPOSANTS_TROUVES, e);
			// Je renvoie une liste vide
			output = new ArrayList<Composant>();
		}

		return output;
	}

}
